package string;
/** String 的演示*/
public class StringDemo {
    public static void main(String[] args) {
        /*
        使用
         */
        /*
        String s1="123abc";
        String s2="123abc";
        String s3="123abc!";
        s1=s1+"!";
        System.out.println(s1);
        System.out.println(s2);

        System.out.println(s3==s1);

         */

        /*
        String s1="123abc";//堆中创建123abc字符对象，并缓存到常量池中
        //编译器在编译时，若发现是两个字面量相连，则会直接连接好并降结果保存起来
        //如下语句会呗编译为String s2=“123abc”；
        String s2="123"+"abc";
        System.out.println(s1==s2);//true

        String s3="123";
        //因为s3是一个变量，所以编译器不会直接编译好
        String s4=s3+"abc";//创建一个新的对象并储存123abc
        System.out.println(s1==s4);//false

         */


        /**
        常见面试题
        Strin s=new String("hello")
        问：如上语句创建了几个对象？  答：2个
         第一个：字面量”hello“
         Java会创建一个String对象表示字面量”hello“，并将其存入常量池中
         第二个：new String（)
         new String ()时会再创建一个字符串对象，并引用hello字符串内容
         */

        String s=new String("hello");
        String s1="hello";
        System.out.println(s==s1);//false比较的是地址是否相同

        System.out.println(s.equals(s1));//true比较的是字符串内容




    }
}
